#ifndef __ITCPServer_H__
#define __ITCPServer_H__
#include <lampe/config.h>
#include <lampe/types.h>
#include <lampe/network/IServer.h>
#include <lampe/base_type_vendor.h>
#include <lampe/network/IServerCallBack.h>
namespace lampe{
namespace network{


class ITCPServer:public virtual IServer{
public:
	/**
	 * Устанавливает порт сервера. Если сервер уже запущен, то порт изменён не будет
	 *
	 * @return p порт, который нужно устанавить серверу
	 */
	virtual void port(lampe::u32 port)=0;

	/**
	 * Возвращяет порт, на котором работает сервер
	 *
	 * @return порт сервера
	 */
	virtual lampe::u32 port()=0;
};

/**
 * Создаёт экземпляр класса TCP сервера
 *
 * @param callBack управляющий интерфейс
 * @return экземпляр класса TCP сервера
 **/
ITCPServer*createTCPServer(IServerCallBack*callBack);

}//namespace network
}//namespace lampe
#endif
